package vip.liux.backend.application.service.point;

import vip.liux.application.dots.PagedResultDto;

import java.util.List;
import java.util.Map;

/**
 * 积分交易服务接口
 * 定义了积分交易相关的操作，包括查询、充值、消费和退款等功能。
 */
public interface PointsTransactionService {

    /**
     * 分页查询积分交易流水
     *
     * @param userId 用户ID
     * @param input  查询条件
     * @return 分页结果，包含积分交易记录
     */
    PagedResultDto<PointsTransactionDto> queryAccount(Long userId, PointsTransactionQueryDto input);

    /**
     * 积分批量充值
     *
     * @param input 充值积分的请求列表
     * @return 充值结果，key为订单号，value为交易记录Dto
     */

    Map<String, PointsTransactionDto> batchRechargePoints(List<PointsRechargeDto> input);

    /**
     * 单次充值积分
     *
     * @param earnDto 充值积分的请求
     * @return 充值结果，交易记录Dto
     */
    PointsTransactionDto rechargePoints(PointsRechargeDto earnDto);

    /**
     * 批量消费积分
     *
     * @param input 扣除积分的请求列表
     * @return 扣除结果，key为订单号，value为交易记录Dto
     */
    Map<String, PointsTransactionDto> batchConsumePoints(List<PointsConsumeDto> input);

    /**
     * 单次消费积分
     *
     * @param consumeDto 扣除积分的请求
     * @return 扣除结果，交易记录Dto
     */
    PointsTransactionDto consumePoints(PointsConsumeDto consumeDto);

    /**
     * 退款积分
     *
     * @param refundDto 退款积分的请求
     * @return 退款结果，交易记录Dto
     */
    PointsTransactionDto refundPoints(PointsRefundDto refundDto);


}